package epoch.game.core.distr;

import epoch.game.core.server.ISession;

/**
 * 接收消息
 * @author will
 * @date 2015年11月20日 上午9:45:45
 */
public interface INodeChannel {
	
	/**
	 * session建立
	 * @param session
	 */
	void onSessionCreated(ISession session);
	
	/**
	 * session打开
	 * @param session
	 */
	void onSessionOpened(ISession session);
	
	/**
	 * 接收消息
	 * @param session
	 * @param data
	 */
	void onMessageReceived(ISession session, byte[] data);
	
	/**
	 * 闲置状态的处理
	 * @param session
	 * @param idleStatus
	 */
	void onSessionIdle(ISession session);
	
	/**
	 * 捕获到异常
	 * @param session
	 * @param throwable
	 */
	void onExceptionCaught(ISession session, Throwable throwable);
	
	/**
	 * 连接断开处理
	 * @param session
	 */
	void onSessionClosed(ISession session);
	
	/**
	 * 消息发送完毕
	 * @param session
	 * @param message
	 */
	void onMessageSent(ISession session, Object message);

}
